iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

了解如何查看資料型態後,接著會開始針對各種資料型態在資料分析中常見的處理做介紹。
首先,就先來講講字串(string)的處理吧!

  • 字串的切割和合併
    切割可以使用strsplit(),使用strsplit()後資料型態會變成list,再使用unlist()轉回vector型態
# 先建立一個vector,裡面包含多個元素
day8 = c("May Lin", "Jay Lee", "Ann Liu")

# 使用空格當成切割的斷點,
unlist(strsplit(day8, split = " "))
[1] "May" "Lin" "Jay" "Lee" "Ann" "Liu"

合併可以使用paste()paste0(),使用paste()時,也可以利用參數sep來定義要分割的符號

# 將字串做合併
last_name = c("May", "Jay", "Ann")
first_name = c("Lin", "Lee", "Liu")
paste(last_name, first_name)
[1] "May Lin" "Jay Lee" "Ann Liu"

paste(last_name, first_name, sep = "_")
[1] "May_Lin" "Jay_Lee" "Ann_Liu"

# 使用paste0()則last_name與first_name中間不會有空白
paste0(last_name, first_name)
[1] "MayLin" "JayLee" "AnnLiu"
  • substr(): 擷取特定位置的字元,指定要取出的字元位置
# 先建立一個vector,裡面包含多個元素
day8 = c("May Lin", "Jay Lee", "Ann Liu")

# 只取出名(不含姓氏)
substr(day8, 1, 3)
[1] "May" "Jay" "Ann"

# 另一個取法,使用lapply()搭配前面提到的strsplit()
unlist(lapply(strsplit(day8," "), function(x) x[1]))
  • grepl(): 尋找包含特定字串的元素
# 取出姓氏為Lin的,若只使用grepl,會回傳TRUE/FALSE
day8 = c("May Lin", "Jay Lee", "Ann Lin")
grepl("Lin", day8)
[1]  TRUE FALSE  TRUE

# 取出姓氏為Lin的完整人名
day8[grepl("Lin", day8)]
[1] "May Lin" "Ann Lin"
  • gsub(): 替換包含特定字串的元素
day8 = c("May Lin", "Jay Lee", "May Lin")

# 將包含May的字串替換成Angela
gsub("May", "Angela", day8)
[1] "Angela Lin" "Jay Lee"    "Angela Lin"
  • 將所有英文字母轉成大寫toupper()/小寫tolower()
    (Tips: 資料分析中,有時候蒐集到的資料是人為填寫的,因此會出現同個單子,有大寫也有小寫,這時候toupper()tolower()就可以快速一起轉大/小寫達成一致)
day8 = c("May Lin", "Jay Lee", "Ann Lin")
tolower(day8)
[1] "may lin" "jay lee" "ann lin"

toupper(day8) 
[1] "MAY LIN" "JAY LEE" "ANN LIN"

文字處理的介紹就到這邊,下一篇會再繼續介紹更多資料處理常用的函數給大家認識!


上一篇
[Day 7] R語言查看資料型態
下一篇
[Day 9] R語言apply函數
系列文
30天成為資料分析師-手把手R語言與資料分析教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言